//
//  LQBaseAPIManager.h
//  LQBaseKit
//
//  Created by 戴志朋 on 15/10/26.
//  Copyright © 2015年 hzdracom. All rights reserved.
//

#import "AFHTTPRequestOperationManager.h"

typedef enum
{
    APICachePloy_Normal = 0, //先获取缓存数据,如果没有再获取服务器数据
    APICachePloy_Server = 1, //获取服务器数据
    APICachePloy_Cache  = 2  //获取缓存数据
} APICachePloy;

@interface LQBaseAPIManager : AFHTTPRequestOperationManager

@property(nonatomic, unsafe_unretained)APICachePloy cachePloy;

/**
 *  @author Jeffrey, 15-03-19 14:03:17
 *
 *  使用本方法返回一个 API 实例
 *
 *  @return API 实例
 */
+ (instancetype)sharedManager;

/**
 *  @author Jeffrey, 15-04-18 12:04:38
 *
 *  字典转JSon
 *
 *  @param dic 入参
 *
 *  @return jsonString
 */
- (NSString *)jsonStringWithDictionary:(NSDictionary *)dic;

/**
 *  @author Jeffrey, 15-04-18 12:04:01
 *
 *  JSONstring转JSON
 *
 *  @param jsonString 入参
 *
 *  @return json
 */
- (id)jsonStringToJson:(NSString *)jsonString;

/**
 *  @author Jeffrey, 15-04-11 15:04:43
 *
 *  将对象转成字典
 *
 *  @param data 对象
 *
 *  @return NSDictionary
 */
- (NSDictionary *)objectFromData:(id)data;

/**
 *  @author Jeffrey.Dai, 16-04-22 21:04:08
 *
 *  数组对象转换成字典
 *
 *  @param obj 对象数组
 *
 *  @return NSDictionary
 */
- (id)getObjectInternal:(id)obj;

/**
 *  @author Jeffrey, 15-04-11 15:04:02
 *
 *  根据参数和apiName获取缓存key
 *
 *  @param parameters 请求参数
 *  @param apiName    请求名字
 *
 *  @return 缓存key
 */
- (NSString *)cacheKeyWithParameters:(NSDictionary *)parameters apiName:(NSString *)apiName;

/**
 *  @author Jeffrey, 15-04-13 09:04:59
 *
 *  同cacheKeyWithParameters方法，但该方法用于特殊场景，比如说每次请求参数都不一样的情况
 *
 *  @param apiName 请求名字
 *
 *  @return 混存key
 */
- (NSString *)cacheKeyWithApiName:(NSString *)apiName;

@end
